package com.hsgene.order.persistence;

import com.hsgene.order.domain.v1.GeneticTestingOrderPayment;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 订单支付信息Repository
 *
 * @author wangbing
 * @version 1.0, 2018/9/19
 */
@Repository
public interface OrderPaymentRepository {

    /**
     * 根据订单id查询订单最新的支付信息
     *
     * @param orderId 订单id
     * @return 订单支付信息
     */
    GeneticTestingOrderPayment getLatestPaymentByOrderId(@Param("orderId") String orderId);

    /**
     * 根据支付单号查询支付信息
     *
     * @param paymentNo 支付单号
     * @return 支付信息
     */
    GeneticTestingOrderPayment findByPaymentNo(@Param("paymentNo") String paymentNo);

    /**
     * 更新订单支付信息
     *
     * @param payment 订单支付信息
     */
    void update(@Param("payment") GeneticTestingOrderPayment payment);

    /**
     * 根据业务类型和业务id查询支付信息
     *
     * @param businessType 业务类型
     * @param businessId   业务id
     * @return 支付信息
     */
    GeneticTestingOrderPayment findByBusiness(@Param("businessType") Integer businessType, @Param("businessId") String businessId);

    /**
     * 保存支付信息
     *
     * @param orderPayment 支付信息
     */
    void save(@Param("orderPayment") GeneticTestingOrderPayment orderPayment);

    /**
     * 查询订单关联的成功支付信息
     *
     * @param orderId      订单id
     * @param businessType 业务类型（可空）
     * @return 支付信息
     */
    List<GeneticTestingOrderPayment> querySuccessPayment(@Param("orderId") String orderId, @Param("businessType") Integer businessType);
}
